科技新知

前述我們介紹了負載平衡器的概念,也使用了nginx作為反向代理,管理網絡訪問,分流到對應的服務上( docker service )。 nginx是穩定的,大家初次使用 reverse proxy (反向代理),請選擇它,因為相對簡單,也易於在單機上做對比測試。

而nginx有個麻煩的地方,就是每次加 docker service,都需要更改 nginx 的設定。我們service 越多,config檔就越長。一個不少心,某些設定有衝突,就會讓 nginx 無法重起。

所以,我們在一定規模後,就需要改用自動化的反向代理。 traefik 就是其中之一。所恨的是,官方沒有提供 swarm 的範例,需要自行摸索。幸好筆者找到一個Github網路資源,bluepuma77 traefik-best-practice,內有一個traefik在docker swarm上的基本設定,足以解開筆者的某些謎思,至少可以讓筆者進行使用驗證。

bluepuma77 提供的範例可能還有些複雜,筆者就再簡化一下,讓大家可以從最基本的環境中開始。

下述 docker service 中

  • traefik: 自動偵測 swarm 中,有那些其他 service 需要經過traefik 代理。
  • whoami: 一個官方提供的簡單版http 回應,它正常可以回應 http 80的請求。
 
 

有一些重要的地方需要特別說明:

  • 需要設定 --providers.swarm.exposedByDefault=false,不然traefik自己也需要定義反向代理的port。設定了這個,也可以讓 swarm 中某些 service 得以被忽略。有需要經 traefik 對外的,就在 label 下設定 traefik.enable=true
  • 需要設定--providers.swarm.network=proxy,swarm中也需要有該網絡的存在。不然traefik 沒有預設的網絡可以走。
  • 現時 docker service 使用是的 ingress mode,方便 traefik service 可以在不同的 manager 上遊走。測試時需要注意使用 ipv4 ,例如 curl 需要指定 ipv4 的 ip 即curl -v -H 'host:whoami.localhost' http://127.0.0.1/ ,若直接使用 whoami.localhost ,有機會會指向 ivp6 , ingress mode 就接不到。

Reference:

馬交野


4DX  侏羅紀世界:重生
學姊是男孩劇場版:雨後天晴
4DX  F1電影
雄獅少年2
MX4D F1電影
F1 電影
英語版  馴龍記
野黨
IMAX with Laser F1電影
器子
F1電影
武士撈過界
愉快動物餅大電影
超異能特攻
英語版  史迪仔
私家偵探
殺神John Wick之芭蕾殺姬
不赦之罪
史迪仔 英語版
殺神JOHN WICK外傳:芭蕾殺姬
人工殺姬 2.0
外星奇遇記 英語版
關於我和鬼變成家人的那封利是
超人
外星奇遇記
職業特工隊:最終清算
侏羅紀世界:重生
馴龍記
28年後
史迪仔
死神來了:血脈
4DX  侏羅紀世界:重生